package cm.unit2.theme3;

import java.util.ArrayList;
import java.util.Stack;

import cm.commom.ListNode;

public class PrintListFromTailToHeadClass {

	// 递归解法
	ArrayList<Integer> list = new ArrayList();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
	
    
	// 一直在数组头部插入
    
    // 两次遍历，第一次统计个数
    
    // 调用栈
    public ArrayList<Integer> printListFromTailToHead01(ListNode listNode) {
    	Stack<Integer> listNodes = new Stack<>();
    	
        for(ListNode node=listNode;node!=null;node=node.next) {
        	listNodes.add(node.val);
        }
        while (!listNodes.empty()) {
        	list.add(listNodes.pop());
		}
        return list;
    }
    
    public static void main(String[] args) {
		
	}
}
